package com.example.rwq_test.niuke.tree;

import java.util.LinkedList;
import java.util.Queue;

/**
 * 是否为完全二叉树
 *  完全二叉树：若设二叉树的深度为h，除第 h 层外，其它各层 (1~h-1) 的结点数都达到最大个数，第 h 层所有的结点都连续集中在最左边，这就是完全二叉树。
 *
 * @author renweiqiang
 * @version 1.0.0
 * @createTime 2023/11/13
 */
public class CompleteBinaryTree {

    public static boolean isCompleteBinaryTree(TreeNode root) {
        if (root == null) {
            return true;
        }
        Queue<TreeNode> list = new LinkedList<>();
        list.offer(root);
        boolean result = false;
        while (!list.isEmpty()) {
            TreeNode pop = list.poll();
            if (pop == null) {
                result = true;
                continue;
            }
            if (result) {
                return false;
            }
            list.offer(pop.left);
            list.offer(pop.right);
        }
        return true;
    }
}
